package com.jiangyg.mall.product.dto;

import com.jiangyg.mall.core.support.validation.constraints.IntAnyValue;
import com.jiangyg.mall.coupon.dto.SpuBoundsDTO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 类描述：新增SPU信息DTO
 *
 * @author jiangyg
 * @date 2021-11-13
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode
public class SpuSaveDTO implements Serializable {

    private static final long serialVersionUID = -474627580425513512L;

    /**
     * 商品id
     */
    private Long id;

    /**
     * 商品名称
     */
    @NotNull
    @Length(min = 2, max = 50)
    private String name;

    /**
     * 商品描述
     */
    @NotNull
    @Length(min = 2, max = 512)
    private String desct;

    /**
     * 商品重量
     */
    @NotNull
    private BigDecimal weight;

    /**
     * 上架状态[0 - 下架，1 - 上架]
     */
    @NotNull
    @IntAnyValue({0, 1})
    private Integer published;

    /**
     * 品牌id
     */
    @NotNull
    private Long brandId;

    /**
     * 所属分类id
     */
    @NotNull
    private Long categoryId;

    /**
     * 商品介绍图片集
     */
    @NotNull
    private List<String> introduce;

    /**
     * 商品图片集
     */
    @NotNull
    private List<String> images;

    /**
     * 规格参数
     */
    @Valid
    @NotNull
    private List<SpuAttrDTO> baseAttrs;

    /**
     * 积分信息
     */
    @Valid
    @NotNull
    private SpuBoundsDTO bounds;

    /**
     * 销售属性
     */
    @Valid
    @NotNull
    private List<SkuSaveDTO> skus;

}
